﻿using System;
using System.Linq;
using System.Windows.Forms;
using ConnectionBase;

namespace EveProd
{
	public partial class FormResultat : Form
	{
		// Ma connexion à la base de donnée
		private DataClassesEveProdDataContext _dataContextBase = new DataClassesEveProdDataContext();

		public FormResultat()
		{
			InitializeComponent();
		}

		/// <summary>
		/// Chargement de la Form.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void FormResultat_Load(object sender, EventArgs e)
		{
			var prout = (from gg in _dataContextBase.ViewResultats
			             orderby gg.Benefice descending
			             select new
			                    	{
			                    		Nom_Objet = gg.NomItem,
										Cout_Production = gg.CoutProduction,
										Prix_Vente = gg.PrixVente,
										Bénéfice = gg.Benefice,
										Temps_Prod_Isk = gg.TempsIsk
									});

			dataGridViewResultatCalcul.DataSource = prout;
		}

		/// <summary>
		/// Evènement sur la sélection d'un objet, cela affiche le détail du Calcul.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void AfficherDetailCalcul_CellClick(object sender, DataGridViewCellEventArgs e)
		{
			// Je ne prend que sur la premier colonne (les noms des items.)
			if(e.ColumnIndex != 0)
				return;

			// Je récupère le nom de l'item.
			var nomItem = dataGridViewResultatCalcul.CurrentCell.Value.ToString();

			// Maintenant je vais chercher les infos dans la table ResultatCalculDetail en fonction du nom de l'item.
			var resultat = (from gg in _dataContextBase.ViewDetailResultat
			                join item in _dataContextBase.ItemsEve
			                	on gg.IdItemEve equals item.IdItem
			                where item.NomItem == nomItem
			                select new
			                       	{
										Composant = gg.NomItem,
										Quantité = gg.QuantiteYou,
										Prix_unitaire = gg.PrixUnitaire,
										Prix_Total = gg.PrixTotal
									}
							);

			// J'affiche le résultat dans le 2ème dataGridView.
			dataGridViewDetail.DataSource = resultat;

			// Là, je vais récupérer les informations sur le BluePrint.
			var infoBp = (from gg in _dataContextBase.Blueprint
			              join it in _dataContextBase.ItemsEve
			              	on gg.IdProduct equals it.IdItem
			              where it.NomItem == nomItem
			              select gg);

			if(infoBp.Count() == 1)
			{
				Blueprint pourAffichage = infoBp.First();

				textBoxMe.Text = pourAffichage.MaterielEfficiency.ToString();
				textBoxPe.Text = pourAffichage.ProductionEfficiency.ToString();
				textBoxTechLvl.Text = pourAffichage.TechLvl.ToString();
			}

		}

		/// <summary>
		/// Ferme la fenêtre
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void buttonQuitter_Click(object sender, EventArgs e)
		{
			Close();
		}

	}
}
